home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / c / datelib.exe / CNVTTIME.C < prev    next >
C/C++ Source or Header  |  1992-03-27  |  4KB  |  146 lines

  1. static char cnvttime_prog[] = "@(#)Zeitkonversionen";
  2. static char cnvttime_ver[]  = "@(#)ver 1.00/kr ; 10.06.91";
  3. /* cnvttime         Konvertieren von Zeitformaten
  4. **
  5. ** Autor            Klaus Rath
  6. **
  7. ** Deklaration      char *cnvttime(char *zeit, int dest_format, char *erg);
  8. **
  9. ** Übergabe         Die Funktion erwartet einen String in einem der folgenden
  10. **                  Formate :
  11. **                  hh:mm[:ss] -- Formate 1,2
  12. **                  hh.mm[.ss] -- Formate 3,4
  13. **                  hhmm[ss]   -- Datenbankformate 5,6
  14. **                  sowie einen int-Wert, der das Ausgabeformat festlegt.
  15. **                  ( siehe datum.h )
  16. **
  17. ** Rückgabe         Zeiger auf ein char-Array, das ausreichend dimensioniert
  18. **                  sein sollte, bzw. im Fehlerfall NULL.
  19. **
  20. ** Änderungen       1.00 ; 10.06.91
  21. **                  - Erste Version
  22. */
  23.  
  24. #include <stdio.h>
  25. #include <string.h>
  26. #ifdef __TURBOC__
  27. #define ANSI
  28. #define MSDOS
  29. #include <stdlib.h>
  30. #endif
  31. #include "datum.h"
  32.  
  33. #ifdef ANSI
  34. char *cnvttime(char *tstring, int dest_format, char *erg)
  35. #else
  36. char *cnvttime(tstring,dest_format,erg)
  37. char *tstring;
  38. int   dest_format;
  39. char *erg;
  40. #endif
  41. {
  42.     char   stunden_s[3],minuten_s[3],sekunden_s[3];
  43.     int    format;
  44.  
  45.     erg[0] = '\0';
  46.  
  47.     /* Überprüfung auf Gültigkeit bzw. Format :
  48.     */
  49.     format = checktime(tstring);
  50.     if ( !format ) {
  51.         return(NULL);
  52.     }
  53.  
  54.     /* Falls Formate identisch sind, sind wir fertig :
  55.     */
  56.     if ( format == dest_format ) {
  57.         return(tstring);
  58.     }
  59.  
  60.     /* Format überprüfen und umkopieren :
  61.     */
  62.     if ( format >= 1 && format <= 4 ) {
  63.         stunden_s[0] = tstring[0];
  64.         stunden_s[1] = tstring[1];
  65.         stunden_s[2] = '\0';
  66.         minuten_s[0] = tstring[3];
  67.         minuten_s[1] = tstring[4];
  68.         minuten_s[2] = '\0';
  69.         if ( format == 2 || format == 4 ) {
  70.             sekunden_s[0] = tstring[6];
  71.             sekunden_s[1] = tstring[7];
  72.             sekunden_s[2] = '\0';
  73.         }
  74.         else {
  75.             sekunden_s[0] = '0';
  76.             sekunden_s[1] = '0';
  77.             sekunden_s[2] = '\0';
  78.         }
  79.     } /* ENDE: Formate 1-4 */
  80.     else if ( format == 5 || format == 6 ) {            /* Datenbank-Format */
  81.         stunden_s[0]  = tstring[0];
  82.         stunden_s[1]  = tstring[1];
  83.         stunden_s[2]  = '\0';
  84.         minuten_s[0]  = tstring[2];
  85.         minuten_s[1]  = tstring[3];
  86.         minuten_s[2]  = '\0';
  87.         if ( format == 6 ) {
  88.             sekunden_s[0] = tstring[4];
  89.             sekunden_s[1] = tstring[5];
  90.             sekunden_s[2] = '\0';
  91.         }
  92.         else {
  93.             sekunden_s[0] = '0';
  94.             sekunden_s[1] = '0';
  95.             sekunden_s[2] = '\0';
  96.         }
  97.     } /* ENDE: Datenbankformate 5 und 6 */
  98.     else
  99.         return(NULL);
  100.     /* ENDE:if(Formatprüfung und Kopierung) */
  101.  
  102.     /* Umkopieren in das passende Format :
  103.     */
  104.  
  105.     switch ( dest_format ) {
  106.  
  107.       case TI_HM_D:
  108.               strcpy(erg,stunden_s);
  109.               strcat(erg,":");
  110.               strcat(erg,minuten_s);
  111.               return(erg);
  112.       case TI_HMS_D:
  113.               strcpy(erg,stunden_s);
  114.               strcat(erg,":");
  115.               strcat(erg,minuten_s);
  116.               strcat(erg,":");
  117.               strcat(erg,sekunden_s);
  118.               return(erg);
  119.       case TI_HM_P:
  120.               strcpy(erg,stunden_s);
  121.               strcat(erg,".");
  122.               strcat(erg,minuten_s);
  123.               return(erg);
  124.       case TI_HMS_P:
  125.               strcpy(erg,stunden_s);
  126.               strcat(erg,".");
  127.               strcat(erg,minuten_s);
  128.               strcat(erg,".");
  129.               strcat(erg,sekunden_s);
  130.               return(erg);
  131.       case TI_HM_DB:
  132.               strcpy(erg,stunden_s);
  133.               strcat(erg,minuten_s);
  134.               return(erg);
  135.       case TI_HMS_DB:
  136.               strcpy(erg,stunden_s);
  137.               strcat(erg,minuten_s);
  138.               strcat(erg,sekunden_s);
  139.               return(erg);
  140.  
  141.     } /* ENDE: switch(dest_format) */
  142.  
  143.     return(NULL);
  144.  
  145. } /* ENDE: cnvttime() */
  146.